
package tereshchuk.homework;

/**
 *
 * @author Pasha
 */

import java.io.*;
import java.util.*;

public class Seasons {

    /**
     * @param args the command line arguments
     */
    private static Scanner sc;
    
    public static void main(String[] args) {
        sc = new Scanner(System.in);
        int userChoise = 0;
        boolean continueCycle = true;
        while (continueCycle) {
            System.out.println("Сделайты выбор:");
            System.out.println("\t1: Узнать время года по номеру месяца");
            System.out.println("\t2: Спортлото 82");
            System.out.println("\t3: Дайс");
            System.out.println("\t4: Выход");
            System.out.print("Ваш выбор:");
            if (sc.hasNextInt()) {
                userChoise = sc.nextInt();
                switch (userChoise) {
                    case 1:
                        printSeason();
                        break;
                    case 2:
                        sportloto82();
                        break;
                    case 3:
                        dice();
                        break;
                    case 4:
                        continueCycle = false;
                        continue;
                } 
                
                System.out.println();
                do {
                    System.out.println("Продолжить:");
                    System.out.println("\t1: Да");
                    System.out.println("\t2: Нет");
                    System.out.print("Ваш выбор:");
                } while(!sc.hasNextInt());
                if (sc.nextInt() == 2) {
                    continueCycle = false;
                    continue;
                }
            } else {
                System.console().flush();
                //System.out. println("Не корректное значение");
            }
        }
        

    }
    
    private static void printSeason() {
        int MonthNum;
        do {
            System.out.print("Введите номер месяца:");
            if (sc.hasNextInt()) {
                MonthNum = sc.nextInt();
                break;
            } else {
                System.out.println("Не корректное значение");
                sc.next();
            }
        } while(true);
                
        System.out.print("Сезон: ");
        switch (MonthNum) {
            case 1:
            case 2:
            case 12:
                System.out.println("зима");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("весна");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("лето");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("осень");
                break;
            default:
                System.out.println("такого месяца нет");
        }        
    }
  
    private static void sportloto82() { 
        boolean continueCycle = true;
        int[] masDigit = null;
        Random rnd = new Random();
        int generationDigit = 0;
        int generationCount = 0;
        int i = 0;
        int saveValue;
        do {
            System.out.println();
            System.out.println("\t\tСпортлото 82");
            System.out.println("Сделайте свой выбор:");
            System.out.println("\t1. 6 из 36");
            System.out.println("\t2. 7 из 42");
            System.out.println("\t3. Выход");
            System.out.print("Ваш выбор:");
            if (sc.hasNextInt()) {
                switch (sc.nextInt()) {
                    case 1:
                        generationDigit = 36;
                        generationCount = 6;
                        break;
                    case 2:
                        generationDigit = 42;
                        generationCount = 7;
                        break;
                    case 3:
                        continueCycle = false;
                        continue;
                    default:
                        continue;
                }
                masDigit = new int[generationCount];
                while (i < masDigit.length) {
                    saveValue = rnd.nextInt(generationDigit + 1);
                    for (int val: masDigit) {
                        if (val == saveValue) {
                            continue;
                        }
                    }
                    masDigit[i] = saveValue;
                    i++;
                };
                break;
            } else {
                System.out.println("Не корректное значение");
                sc.next();
            }
        } while(continueCycle);
        
        if (masDigit != null) {
            System.out.print("Выпавшие чисда: ");
            for (int val: masDigit) {
                System.out.print(" " + val);
            }
        }
        System.out.println();
    }
   
    private static void dice() {
        int numberOfDices;
        int numberOfShots;
        int numberOfCubes;
        Random rnd = new Random();
        
        System.out.println("\t\tДайс");
        do {
            System.out.print("Введите количество граней:");
            if (sc.hasNextInt()) {
                numberOfDices = sc.nextInt();
                if (numberOfDices < 1 || numberOfDices > 100) {
                    System.out.println("Число должно быть в диапазоне от 1 до 100");
                    sc.next();
                } else {
                    break;
                }
            } else {
                sc.next();
            }
        } while(true);
        
        do {
            System.out.print("Введите количество бросков:");
            if (sc.hasNextInt()) {
                numberOfShots = sc.nextInt();
                if (numberOfShots < 1 || numberOfShots > 100) {
                    System.out.println("Число должно быть в диапазоне от 1 до 100");
                    sc.next();
                } else {
                    break;
                }
            } else {
                sc.next();
            }
        } while(true);     
        
        do {
            System.out.print("Введите количество кубиков:");
            if (sc.hasNextInt()) {
                numberOfCubes = sc.nextInt();
                if (numberOfCubes < 1 || numberOfCubes > 100) {
                    System.out.println("Число должно быть в диапазоне от 1 до 100");
                    sc.next();
                } else {
                    break;
                }
            } else {
                sc.next();
            }
        } while(true); 
        
        for (int i = 1; i <= numberOfShots; i++) {
            System.out.println("Бросок: " + i);
            for (int j = 1; j <= numberOfCubes; j++) {
                System.out.print("\tКубик: " + j);
                System.out.print(" число " + rnd.nextInt(numberOfDices + 1));
                System.out.println();
            }
        }
    }
}
